package demo03;

import java.io.File;

/*
 *  File类的构造方法：
 *      File(String pathname)：将给定路径名字符串转换为抽象路径名，并通过它来创建一个新File实例
 *      File(String parent, String child)：根据parent路径名字符串和child路径名字符串创建一个新File实例
 *      File(File parent, String child)：根据parent抽象路径名和child路径名字符串创建一个新File实例
 */
public class Demo02File {
    public static void main(String[] args) {
        demo01();
        demo02("c:\\", "a.txt"); // c:\a.txt
        demo03();
    }

    /*
     *  File(File parent, String child)：根据parent抽象路径名和child路径名字符串创建一个新File实例
     *  参数：将路径分成了两部分
     *      File parent：父路径（文件对象的抽象路径名）
     *      String child：子路径
     *  优点：
     *      父路径和子路径可以单独书写，各自变化，使用起来灵活方便
     *      父路径是File类型，可以使用File的方法对路径进行一些操作，再使用该路径和子路径来创建对象
     */
    private static void demo03() {
        File parent = new File("c:\\");
        File file = new File(parent, "a.txt");
        System.out.println(file); // c:\a.txt
    }

    /*
     *  File(String parent, String child)：根据parent路径名字符串和child路径名字符串创建一个新File实例
     *  参数：将路径分成了两部分
     *      String parent：父路径
     *      String child：子路径
     *  优点：
     *      父路径和子路径可以单独书写，各自变化，使用起来灵活方便
     */
    private static void demo02(String parent, String child) {
        File file = new File(parent, child);
        System.out.println(file);
    }

    /*
     *  File(String pathname)：将给定路径名字符串转换为抽象路径名，并通过它来创建一个新File实例
     *  参数：
     *      String pathname：路径名字符串
     *          路径可以以文件结尾，也可以以文件夹结尾
     *          路径可以是相对路径，也可以是绝对路径
     *          路径可以是存在的，也可以是不存在的
     *          创建File对象，只是把字符串路径封装为File对象，不会考虑路径是否真实存在
     */
    private static void demo01() {
        // 路径参数可以以文件结尾
        File file1 = new File("D:\\code\\ameri_-java\\Java_code\\day18\\src\\demo03\\Demo02File.java");
        System.out.println(file1); // D:\code\ameri_-java\Java_code\day18\src\demo03\Demo02File.java

        // 路径参数可以以文件夹结尾
        File file2 = new File("D:\\code\\ameri_-java\\Java_code\\day18\\src\\demo03");
        System.out.println(file2); // D:\code\ameri_-java\Java_code\day18\src\demo03

        // 路径参数可以不存在
        File file3 = new File("a.txt");
        System.out.println(file3); // a.txt
    }
}
